<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //call 改变this 的指向
      //函数.call(this的指向，参数1，参数2 ....)
      // call方法会直接调用函数
      //显性指向

      const obj = {
        uname: 'ikun',
      }

      function fn(a, b) {
        console.log(this)
        console.log(a + b)
      }

      //   fn() //this指向window
      fn.call(obj, 1, 2) // this指向obj

      //new的过程
      //1.创建空对象
      //   const obj = {}
      //2. 改原型指向
      //   obj.__proto__ = 构造函数.prototype
      //3.改this指向并且执行构造函数的函数体
      //   构造函数.call(obj,参数1,参数2 ...)
      //4.返回新对象 ：需要先判断构造函数的返回值是否为引用数据类型，如果是那么返回构造函数的返回值，如果不是就返回新对象
    </script>
  </body>
</html>
